var limpiarBasura = new Array();
var amigos;
//Funcion simple para parasear bbcode de youtube
function parsearBBCODE(texto)
{
	var cosa = texto;
	var modificado = texto;
	var re = /\[([^\]]*)\]([^\[]*)\[\/([^\]]*)?/g;
	var match;
	match = re.exec(cosa);
	while (match != null)
	{
		if(match != null)
		{
			if(match[1] == "youtube")
			{
					modificado = modificado.replace("[youtube]"+match[2]+"[/youtube]", '<div align="center"><object width="425" height="350"><param movie="http://www.youtube.com/v/'+match[2]+'&amp;f=videos&amp;app=youtube_gdata/&amp;autoplay=0"><param wmode="transparent"><embed wmode="transparent" type="application/x-shockwave-flash" src="http://www.youtube.com/v/'+match[2]+'&amp;f=videos&amp;app=youtube_gdata/&amp;autoplay=0" width="325" height="250"></object></div>');
			}
		}
		match = re.exec(cosa);
		
	}
	return modificado;
}

function mensajeSistema(mensaje)
{
	$.jGrowl(mensaje, { 
					theme:  'manilla',
					speed:  'slow'});
}
function minimizar(objeto){

	var ventanita = $('<a href="javascript:void(0)" class="dialog_link ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>'+objeto.find(".window_title_text").text()+'</a>');
		ventanita.click(
		function(){
			$(objeto).show();
			$(ventanita).hide("transfer",{ to: objeto, className: 'ui-effects-transfer' },500,function(){$(ventanita).remove()});
		});
		ventanita.hover(
			function() { $(this).addClass('ui-state-hover'); }, 
			function() { $(this).removeClass('ui-state-hover'); }
		);
			
	$("#taskBar").append(ventanita);
	//run the effect
	objeto.hide("transfer",{ to: ventanita, className: 'ui-effects-transfer' },500,function(){objeto.hide()});
};

function nuevoArchivoSubir()
{
	var subirFotos = $("<div>");
		subirFotos.attr("style","padding:5px");	
	var div = $("<div>");
		div.addClass("fileinputs");
			
	var archivoInfo = $("<input>");
		archivoInfo.attr("type","text");
		archivoInfo.addClass("archivoInfo text ui-widget-content ui-corner-all ac_input");
		
	
	var input = $("<input>");
		input.attr("type","file");
		input.attr("name","file");
		input.addClass("file");
		input.change(function(){
			$(this).parent().parent().parent().find(".archivoInfo").val($(this).val());
			if($(this).val().length > 0)
				$("#listaSubirFotos").append(nuevoArchivoSubir());
		});
		
	var inputId = $("<input>");
		inputId.attr("type","hidden");
		inputId.attr("name","APC_UPLOAD_PROGRESS");
		inputId.attr("id","progress_key");

		
	var falsoBoton = $("<div>");
		falsoBoton.addClass("fakefile");
	var	botonBonito = $('<a href="javascript:void(0)" class="dialog_link ui-state-default ui-corner-all"><span class="ui-icon ui-icon-folder-open"></span>Seleccionar foto</a>');
		falsoBoton.html(botonBonito);
		//COloreamos el boton cuando se pasa por encima del input, pasandolo por encima del boton queda peor	
		input.hover(
					function() { $(this).parent().find("div").find("a").addClass('ui-state-hover'); }, 
					function() { $(this).parent().find("div").find("a").removeClass('ui-state-hover'); }
				);
					
		
		
	var form = $("<form>");
		form.addClass("formularioSubida");
		div.append(inputId);
		div.append(input);
		div.append(falsoBoton);
		//div.append(archivoInfo);
		
	var tabla = $("<table>");
	var fila  = $("<tr>");
	var fila2  = $("<tr>");
		tabla.append(fila);
		tabla.append(fila2);
	var col  = $("<td>");
	var col2  = $("<td>");
	var col2_1  = $("<td>");
		fila.append(col);
		fila.append(col2);
		fila2.append(col2_1);
		col.append(archivoInfo);
		col2.append(div);
		col2_1.attr("colspan",2);
		
		form.append(tabla);
		form.attr("enctype","multipart/form-data");
		form.attr("action","consultasAjax.php?seccion=subirArchivos");
		form.attr("method","post");
		
	var barra = $("<span>");
		barra.addClass("progressBar");
		col2_1.append(barra);
		


		subirFotos.append(form);
		
				//Cojemos un nuevo ID
	$.getJSON("consultasAjax.php?seccion=subirArchivos&get_key=1",
	function(data){
		inputId.attr("value",data.uuid);
		barra.attr("id","pb1-"+data.uuid);
	});
		
	return subirFotos;
}

function mostrarNuevoMensajePrivado(idUsuario)
{
	$.getJSON("consultasAjax.php?seccion=informacionUsuario&uuid="+idUsuario,function(data)
	{
			var uuidMensaje = new Date().getTime();
			//Se van a usar ids globables porque solo va a haber una ventana de eventos abierta
			var dialogo=$("<table>"+
			"<tr>"+
				'<td>Nuevo mensaje para </td><td><b>'+data.nombre+' '+data.apellido1+'</b></td>'+
			"</tr>"+
		"</table>"+
		"<br>	"+
		"<div>"+
				'<div id="mensaje-'+uuidMensaje+'" /">'+
		"</div><br><br>"+
		"<p>"+
		'<a href="javascript:void(0)" id="but-enviar-'+uuidMensaje+'" class="dialog_link ui-state-default ui-corner-all"><span class="ui-icon ui-icon-circle-check"></span>Enviar</a>'+
		'<a href="javascript:void(0)" id="but-cancelar-'+uuidMensaje+'" class="dialog_link ui-state-default ui-corner-all"><span class="ui-icon ui-icon-circle-close"></span>Cancelar</a>'+
		"</p>");
				
			
			var nuevoMensaje = $.window({
                width:420,
                height: 385,
           title: 'Mensaje para '+data.nombre+' '+data.apellido1,
           content: dialogo, // load window_block8 html content
           footerContent: '<div id="eventosFooter">Escribe tu mensaje</div>',
           containerClass: "portlet ui-widget ui-widget-content ui-helper-clearfix ui-corner-all",
           headerClass: "portlet-header-centro ui-widget-header ui-corner-all",
           frameClass: "portlet-content",
           footerClass: "portlet-content",
           onClose: function() { // a callback function while user click close button
                if($("#mensaje-"+uuidMensaje).find(".texto").html().length > 0)
                {
                        jConfirm("Parece que no has terminado de enviar el mensaje, quieres salir sin enviarlo?","Confirmar cierre", 
                        function (r)
                        {
                                if(r)
                                        nuevoMensaje.close(true);
                        });
                }else return true;
                }
        });
			
			$('#mensaje-'+uuidMensaje).editor({height:200,width:400});
			//console.debug(dialogo.find('#mensaje-'+uuidMensaje).lengsth);
			//Decorar los botones
			var botonEnviar = $('#but-enviar-'+uuidMensaje);
			var botonCancelar = $('#but-cancelar-'+uuidMensaje);
			
			botonEnviar.hover(
					function() { $(this).addClass('ui-state-hover'); }, 
					function() { $(this).removeClass('ui-state-hover'); }
			);
			
			botonCancelar.hover(
					function() { $(this).addClass('ui-state-hover'); }, 
					function() { $(this).removeClass('ui-state-hover'); }
			);
			
			
			botonCancelar.click(function(){
				nuevoMensaje.close();
			});
			
			botonEnviar.click(function(){
				
				if($("#mensaje-"+uuidMensaje).find(".texto").html().length > 0)
				{
					$("#mensaje-"+uuidMensaje).editor({send: 'consultasAjax.php?seccion=mensajesPrivados&receptor='+idUsuario,
						callback: function(datos){
							if(datos.enviado="ok")
							{
								mensajeSistema("Mensaje enviado satisfactoriamente");
								$("#eventosFooter").text("Mensaje enviado");
								nuevoMensaje.close(true);
							}
							else
							{
								mensajeSistema("No se pudo enviar el mensaje");
								$("#eventosFooter").text("Error al enviar mensaje");
							}
						}});
				}else $("#eventosFooter").text("Por favor escribe un contenido en tu mensaje");
			});
	});
}

function actualizarListaUsuarios()
{
	
	//amigos2 =  new Array();
	$.getJSON("consultasAjax.php?seccion=listaAmigos",
	        function(data){
				amigos = new Array();
				$.each(data, function(i,amigo){
					amigos.push({value:""+amigo.nombre+" "+amigo.apellido1+" "+amigo.apellido2, label:""+amigo.nombre+" "+amigo.apellido1+" "+amigo.apellido2, id:amigo.id});
				});
				
	      	$("#buscarAmigos").autocomplete({
	      		source: amigos,
	      		 select: function(event, ui){
	      		  	window.location.href = "#perfil&uuid="+ui.item.id;
	      		}
	      	});
	});

}

function actualizarPorcentajesSubida()
{
	var terminado = true;
	//Solo acaba valiendo true cuando han terminado todas las subidas
	var barras = $(".progressBar");
		$.each(barras, function(i,barra){
			if($(barra).attr("done") != 1)
			{
				terminado = false;
				var id = barra.id.split("-");
				$.getJSON("consultasAjax.php?seccion=subirArchivos&progress_key="+id[1],
				function(data){
					var porcentaje = data.current*100/data.total;
					$(barra).progressBar(porcentaje);
					if(data.done == 1)
						$(barra).attr("done",1);
				});
			}
		});
		
		if(!terminado)
		{
			setTimeout('actualizarPorcentajesSubida()', 500)
		}
		else
		{
			$("#subirFotosFooter").text("Terminado");
			$("#estadoSubidas").val(0);
			//mensajeSistema("Se han terminado de subir todas las fotos");
			$(".progressBar").progressBar(100);
		}
}

function mostrarSubirFotos()
{
	//Miramos a ver si esta minimizada
	var listaMinimizadas = $("#taskBar a");
	var minimizado = false;
	var pos = 0;
	while (minimizado == false && pos < listaMinimizadas.length)
	{
      if($(listaMinimizadas[pos]).text() == "Subir fotos")
      {
		$(listaMinimizadas[pos]).click();
		minimizado = true;
	  }
	  else
		pos++;
    }
	//Solo creamos si no existe la ventana
	if(minimizado == false && $(".window_title_text:contains(Subir fotos)").length == 0)
	{
	//Creamos el primer div
	var dialogo = $("<div>");
	var lista = $("<div>");
		lista.attr("id","listaSubirFotos");		
	dialogo.append(lista);
		var botonSubir = $('<a href="javascript:void(0)" class="dialog_link ui-state-default ui-corner-all"><span class="ui-icon ui-icon-circle-arrow-n"></span>Subir Fotos</a>');
		
		dialogo.append(botonSubir);
		botonSubir.click(function(){
			//La leyenda
			$("#subirFotosFooter").text("Subiendo fotos, por favor no cierres esta ventana");
			$("#estadoSubidas").val(1);
			//quitamos el boton
			$(this).remove();
			//Comprobamos que todos los campos tienen algo
			$.each($("form"), function(i,form){
				if($(form).find(".archivoInfo").val().length == 0)
				{
					$(form).remove();
				}
			});
			var formularios = $(".formularioSubida");
			
				formularios.ajaxForm({
				beforeSubmit: function(a,f,o) {
					$(".progressBar").progressBar();
				//o.dataType = $('#uploadResponseType')[0].value;
				//$('#uploadOutput').html('Submitting...');
				
			},success:    function(data) {
				var respuesta = eval('('+data+')');
				//Creamos enlace
				var mensaje = $('<span style="padding: 0.2em 0.7em;">');
				var imagenEstado = $('<span style="float: left; margin-right: 0.3em;"/>');
				
				if(respuesta.errorFoto == 0)
				{
					mensajeSistema("Foto "+respuesta.filename+" subida");
					enlace = $('<a class="ui-helper-reset ui-corner-all" href="#foto&uuid='+respuesta.idFoto+'&nFoto='+respuesta.nFoto+'">Ver foto</a>');
					enlace.prepend(imagenEstado);
					
					mensaje.addClass("ui-state-highlight ui-corner-all");
					mensaje.prepend(enlace);
					imagenEstado.addClass("ui-icon ui-icon-check");
				}else{
					mensajeSistema("No se puedo subir la foto "+respuesta.filename);
					mensaje.text(respuesta.mensaje);
					mensaje.prepend(imagenEstado);
					mensaje.addClass("ui-state-error ui-corner-all");
					
					imagenEstado.addClass("ui-icon ui-icon-closethick");
				}
				
				$('#pb1-'+respuesta.idSubida).parent().parent().parent().parent().parent().append(mensaje);
				
				$('#pb1-'+respuesta.idSubida).parent().parent().parent().parent().remove();
				
				
			}

				});
				formularios.submit();
				actualizarPorcentajesSubida();
		});
		
		var ventanaFotos = $.window({
		   title: "Subir fotos",
		   content: dialogo, // load window_block8 html content
		   footerContent: '<input type="hidden" id="estadoSubidas" value="0"><div id="subirFotosFooter">Selecciona las fotos que quieres subir</div>',
		   containerClass: "portlet ui-widget ui-widget-content ui-helper-clearfix ui-corner-all",
		   headerClass: "portlet-header-centro ui-widget-header ui-corner-all",
		   frameClass: "portlet-content",
		   footerClass: "portlet-content",
		   onClose: function() { // a callback function while user click close button
			if($("#estadoSubidas").val() == 1)
			{
				jConfirm("Si cierras la ventana se cancelaran todas las subidas que no hayan terminado","Confirmar cierre", 
				function (r)
				{
					if(r)
						ventanaFotos.close(true);
				});
			}else return true;
			}
		});
		
		//Se pone aqui debajo porque sino no asigna el id en el json de nuevoArchivoSubir()
		//Habra algun conflico entre window y esto, pero así funciona bien
		$("#listaSubirFotos").append(nuevoArchivoSubir());
    
    
	}
}

$(document).ready(function() {
	
	var cargando = $("#cargandoMsg");
	$(document).ajaxSend(function() {
		cargando.show();

		});
	
	$(document).ajaxComplete(function() {
		cargando.hide();
		});
	
	//Historial
	$.history.init(historial);
	
	function historial(hash)
	{
		if(limpiarBasura.length > 0)
		{
			for(var i = 0; i<limpiarBasura.length; i++)
				limpiarBasura[i]();
			limpiarBasura = new Array();
		}

		var seccion;
		if(hash.length == 0)
			window.location.href = "#inicio";

			seccion = hash.split("&");
			if(seccion.length == 0)
				seccion = hash;
			else
				seccion = seccion[0];
			
		$("#boton-"+seccion).addClass("ui-state-active");
		//Widgets
		
		$.getJSON("consultasAjax.php?seccion=ui&pagina="+hash,
        function(data){
			var widgetsMin = new Array();
			
			//Se ocultan para evitar el flasheo mientras carga
			$("#column1").hide();
			$("#column2").hide();
			$("#columnCentro").hide();
			
			$("#column2").html("");
			$("#column1").html("");
			$("#columnCentro").html("");

			  $.each(data.col1, function(i,widget){
				$("#column1").append("<div id=\"widget-"+widget.id+"\" class=\"portlet\">"+
									 "<div class=\"portlet-header\">"+widget.titulo+"</div>"+
									 "<div class=\"portlet-content\">"+widget.contenido+"</div>"+
									 "</div>"); 
				//Para si está minimizado
				if(widget.min == "true")
				{
					widgetsMin.push(widget.id);
				}

			  });

			  $.each(data.col2, function(i,widget){
				$("#column2").append("<div id=\"widget-"+widget.id+"\" class=\"portlet\">"+
									 "<div class=\"portlet-header\">"+widget.titulo+"</div>"+
									 "<div class=\"portlet-content\">"+widget.contenido+"</div>"+
									 "</div>");
				if(widget.min == "true")
				{
					widgetsMin.push(widget.id);
				}

			  });
			  
			  $.each(data.contenido, function(i,widget){
				$("#columnCentro").append("<div id=\"widget-"+widget.id+"\" class=\"portlet-centro\">"+
									 "<div class=\"portlet-header-centro\">"+widget.titulo+"</div>"+
									 "<div class=\"portlet-content\">"+widget.contenido+"</div>"+
									 "</div>");

			  });
			  
          
          //Ahora se hace sortable
          $(".column").sortable({
			connectWith: '.column',
			start: function() {
				if($.url.getSection() == "inicio" || $.url.getSection() == "perfil")
				{
					$(".columnCentroGrande").switchClass('columnCentroGrande', 'columnCentro');
					$("#column2").show();
				}
			},
			stop: function(event,ui) { 
				
				if($("#column2").children().length == 0)
				{
					$("#column2").hide();
					$(".columnCentro").switchClass('columnCentro', 'columnCentroGrande',500);
					
				}
				
				function arr_diff(a1, a2)
				{
				  var a=[], diff=[];
				  for(var i=0;i<a1.length;i++)
					a[a1[i]]=true;
				  for(var i=0;i<a2.length;i++)
					if(a[a2[i]]) delete a[a2[i]];
					else a[a2[i]]=true;
				  for(var k in a)
					diff.push(k);
				  return diff;
				}


				var col1 = $(".column").sortable("toArray");
				var col2;
				var colTodos = new Array();
				var encontrado = false;
				var widgets = $(".column").children();
				var widgetsMinimizados = new Array();
				for(var i = 0; i < widgets.length; i++)
				{
						colTodos.push(widgets.eq(i).attr("id"));
				}
				col2 = arr_diff(col1,colTodos);
				
				var seccion = location.href.toString().split("#");
				if(seccion.length == 0)
					seccion ="inicio";
				else
				{
					seccion = seccion[1];
					var trozosUri = seccion.split("&");
					if(trozosUri.length > 0)
						seccion = trozosUri[0]
				}
				
				//Quitamos la palabra widget- para no enviar cosas innecesarias
				for(var i = 0; i < col1.length; i++)
						col1[i] = col1[i].replace("widget-","");
						
				for(var i = 0; i < col2.length; i++)
						col2[i] = col2[i].replace("widget-","");
						
		
					
				
				$.post("consultasAjax.php?seccion=posicionesWidgets&pagina="+seccion, { col1: col1.join("|"), col2: col2.join("|") } );
			}
		  });

		  //Si se quiere animar hay que activar esto
		  $("#columnCentro").show();
		  $("#column1").show();
		  if(data.col2.length == 0)
			  {
				//$("#column2").show();  
				/*$("#column2").width(1);
				  
				  $("#column2").hover(
				  function() {console.debug("on");},
				  function() {console.debug("off");}
				  );*/
					$(".columnCentro").switchClass('columnCentro', 'columnCentroGrande',500);
					
					
				  //$(".columnCentro").switchClass('columnCentro', 'columnCentroGrande');
				  //$("#column2").show();
				  //$("#columnCentro").toggleClass("columnCentroGrande");
				  //$("#columnCentro").animate({backgroundColor: '#aa0000', color: '#fff', width: 500}, 1000);
				  //$("#columnCentro").animate({width: 500},1000);
				    //$(".columnCentroGrande").addClass('columnCentroGrande');

				    //$(".columnCentroGrande").removeClass('columnCentro');
				 
			  }
			  else
			  {
				  //Por si se quiere animar
				  //$(".columnCentroGrande").switchClass('columnCentroGrande', 'columnCentro', 500);
				  
				  //$(".columnCentroGrande").removeClass('columnCentroGrande');
				  //$(".columnCentroGrande").addClass('columnCentro');
				  
				  $(".columnCentroGrande").switchClass('columnCentroGrande', 'columnCentro');
				  setTimeout(function() {
					  $("#column2").show();
					}, 500);
				  //$("#columnCentro").toggleClass("columnCentro");
			  }
			  //$("#columnCentro").show();
		  
		  $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all")
			.find(".portlet-header")
				.addClass("ui-widget-header ui-corner-all")
				.prepend('<span class="ui-icon ui-icon-plusthick"></span>')
				.prepend('<span class="ui-icon ui-icon-closethick"></span>')
				.end()
			.find(".portlet-content");
			
			$(".portlet-centro").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all")
			.find(".portlet-header-centro")
				.addClass("ui-widget-header ui-corner-all")
				.end()
			.find(".portlet-content");

		  $(".portlet-header .ui-icon").click(function(event) {
			if($(event.target).attr("class").indexOf("close") > -1)
			{
				//console.debug("aa");
				//$(this).parent().parent().hide("drop");
				$(this).parent().parent().fadeOut();
				//$(this).parent().hide("drop");
				//$(this).hide("drop");
				$.get("consultasAjax.php", { seccion: "posicionesWidgets", cerrar: $(this).parent().parent().attr("id").replace("widget-","") } );
			}
			else
			{
				$(this).toggleClass("ui-icon-minusthick");
				$(this).parents(".portlet:first").find(".portlet-content").toggle();
				$.get("consultasAjax.php", { seccion: "posicionesWidgets", cambio: $(this).parent().parent().attr("id").replace("widget-","") } );
			}
		  });

			//Miramos los que esten minimizados
			
			for(var i = 0; i < widgetsMin.length; i++)
			{
				$("#widget-"+widgetsMin[i]).find(".portlet-content").toggle();
				$("#widget-"+widgetsMin[i]).find(".portlet-header .ui-icon").toggleClass("ui-icon-minusthick");
			}	

        });

	}

    /*$("a[@rel='history']").click(function(){
        //$.history.load(this.href.replace(/^.*#/, ''));
        window.location.href = this.href.replace(/^.*#/, ''); 
        return false;
    });*/
    
    //El dock

			$('#dock').Fisheye(
				{
					maxWidth: 50,
					items: 'a',
					itemsText: 'span',
					container: '.dock-container',
					itemWidth: 30,
					proximity: 90,
					halign : 'center'
				}
			);
			
			$("#dock").find("span").addClass("portlet-header-centro ui-widget-header ui-corner-all");
			
			//Pijada para que no se quede marcado cuando se pincha
			$(".dock-item").click(
				function()
				{
					$(this).blur();
				});
		
	//El autocomplete del toolbar
       actualizarListaUsuarios();


	//Toolbar
	$("#botones").buttonset();

		
	$("#botones-inicio").click(
		function () { 
			//historial("inicio");
		  window.location.href = "#inicio"; 
		  $(this).blur();
		}
    );
    $("#botones-perfil").click(
		function () { 
			//historial("perfil");
		  window.location.href = "#perfil"; 
		  $(this).blur();
		}
    );
    $("#botones-amigos").click(
		function () { 
			//historial("buscar");
		  window.location.href = "#buscar"; 
		  $(this).blur();
		}
    );
	
		$(".column").disableSelection();
		
	$("#dock-salir").click(
	function () { 
		//historial("buscar");
		$.get("consultasAjax.php", { seccion: "salir" }, function(){
			window.location.href = "/entrar.php";
		});

	});

	$.cookie("jquery-ui-theme",$.cookie("jquery-ui-theme").replace(/_/," "));

	$(document).themeswitcher();
	$("#chat").chat();


}); 